#include <stdio.h>

int main(int argc, const char *argv[])
{
	unsigned char a = 0xAC;
	unsigned char b = 0xCA;
	unsigned char c = 0;

	// 按位与
	c = a & b;
	// a : 1010 1100
	// b : 1100 1010
	//  &
	// c : 1000 1000  --> 0x88
	printf("c = %#x\n", c); // 0x88

	// 按位或
	c = a | b;
	// a : 1010 1100
	// b : 1100 1010
	//  |
	// c : 1110 1110  --> 0xEE
	printf("c = %#x\n", c); // 0xEE

	// 按位异或
	c = a ^ b;
	// a : 1010 1100
	// b : 1100 1010
	//  ^
	// c : 0110 0110  --> 0x66
	printf("c = %#x\n", c); // 0x66

	// 按位取反
	c = ~a;
	// a : 1010 1100
	//  ~
	// c : 0101 0011  --> 0x53
	printf("c = %#x\n", c); // 0x53

	// 按位左移
	c = a << 2;
	// a : 1010 1100
	//  <<2
	// c : 1011 0000  --> 0xB0
	printf("c = %#x\n", c); // 0xB0

	// 按位右移
	c = a >> 2;
	// a : 1010 1100
	//  <<2
	// c : 0010 1011  --> 0x2B
	printf("c = %#x\n", c); // 0x2B

	return 0;
}
